﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace AI_Bots
{
    class Menu
    {
        /// <summary>
        /// criando os botões
        /// </summary>
        Botao start, options, credits, quit, back, arm, Inimigo_robot, next, Player_robot, info, loja, menu, cabaca_mais, tronco_mais, bracoD_mais, bracoE_mais, pernaD_mais, pernaE_mais, liga,
            n_1, n_2, n_3, n_4, n_5, n_6, n_7, n_8;

        /// <summary>
        /// tamanho do botão (225x45)
        /// </summary>
        float X, Y = 0f;

        /// <summary>
        /// crindo a variavel rnd
        /// </summary>
        Random rnd;

        /// <summary>
        /// criando as int que serão o chip do inimigo
        /// </summary>
        int Inimigo_cabeca;
        int Inimigo_tronco;
        int Inimigo_bracoD;
        int Inimigo_bracoE;
        int Inimigo_pernaD;
        int Inimigo_pernaE;
        int Inimigo_vida;
        int Inimigo_dano;
        int Inimigo_velocidade;
        int Inimigo_ataque_especial;
        int Inimigo_agilidade;
        int Inimigo_agi_teste;
        int Inimigo_ataque_especial_dano;
        int Inimigo_ataque_especial_teste;
        int Inimigo_level;

        /// <summary>
        /// criando as int que serão o chiph do player
        /// </summary>
        int Player_cabeca;
        int Player_tronco;
        int Player_bracoD;
        int Player_bracoE;
        int Player_pernaD;
        int Player_pernaE;
        int Player_vida;
        int Player_dano;
        int Player_velocidade;
        int Player_ataque_especial;
        int Player_agilidade;
        int Player_agi_teste;
        int Player_ataque_especial_dano;
        int Player_ataque_especial_teste;
        int Player_vida_original;
        int Player_vida_original_bonus;
        int Player_level;
        int Player_exp;
        int Player_vida_bonus;
        int Player_dano_bonus;
        int Player_velocidade_bonus;
        int Player_ataque_especial_bonus;
        int Player_agilidade_bonus;
        int Player_ataque_especial_dano_bonus;

        /// <summary>
        /// ints para as info
        /// </summary>
        int Vezes_morto = 0;
        int Vitoria = 0;
        int Maior_critico = 0;
        int Esquivas = 0;
        int Qnt_Inimigos = 0;
        int Menor_vida_em_combate;
        int gold_total;

        /// <summary>
        /// criando o gold
        /// </summary>
        int gold;
        int gold_teste;
        int preco;

        /// <summary>
        /// bool do plater para ver se ta atacando e se ta morto e outrac coisas
        /// </summary>
        bool Player_morto;
        bool Player_atacando;
        bool Player_miss;
        bool Player_critico;

        /// <summary>
        /// fazendo o video que sera o Back Ground da batalha
        /// </summary>
        Video BG_Batalha;

        /// <summary>
        /// player do video
        /// </summary>
        VideoPlayer video_player;

        /// <summary>
        /// Posicao que o crédito está.
        /// </summary>
        float posCredito;

        /// <summary>
        /// criando ensignas e funções da liga
        /// </summary>
        Texture2D ensigna_1;
        Texture2D ensigna_2;
        Texture2D ensigna_3;
        Texture2D ensigna_4;
        Texture2D ensigna_5;
        Texture2D ensigna_6;
        Texture2D ensigna_7;
        Texture2D ensigna_8;
        bool liga_on;
        int avanco_liga = 1;
        int league_points;
        bool liga_1_do;
        bool liga_2_do;
        bool liga_3_do;
        bool liga_4_do;
        bool liga_5_do;
        bool liga_6_do;
        bool liga_7_do;
        bool liga_8_do;

        /// <summary>
        /// bool pra ver se o inimigo esta morto e outras coisas
        /// </summary>
        bool Inimigo_morto;
        bool Inimigo_miss;
        bool Inimigo_critico;

        public enum MenuEnum
        {
            NULL,
            OPTIONS,
            CREDITS,
            START,
            BATALHA,
            INFO,
            LOJA,
            LIGA,
        }

        public static MenuEnum estado_atual = MenuEnum.NULL;

        GameWindow Window;

        public Menu(ContentManager Content, GameWindow Window)
        {
            this.Window = Window;
            posCredito = this.Window.ClientBounds.Height;
            rnd = new Random();

            this.X = (Window.ClientBounds.Width / 4);
            this.Y = (Window.ClientBounds.Height / 4);

            //BG_Batalha = Content.Load<Video>("80UR0B0R0S");
            ensigna_1 = Content.Load<Texture2D>("Forest_Badge");
            ensigna_2 = Content.Load<Texture2D>("Beacon_Badge");
            ensigna_3 = Content.Load<Texture2D>("Relic_Badge");
            ensigna_4 = Content.Load<Texture2D>("Rainbow_Badge");
            ensigna_5 = Content.Load<Texture2D>("Insígnia Ponta de Gelo");
            ensigna_6 = Content.Load<Texture2D>("Fenbadge");
            ensigna_7 = Content.Load<Texture2D>("Coal_Badge");
            ensigna_8 = Content.Load<Texture2D>("Boulder_Badge");

            // Criando os botões usando as Texture2D que passei por parâmetro quando criei o Menu em Game1
            this.start = new Botao(Content.Load<Texture2D>("BtnStart"), Window, this.X + 300, this.Y);
            this.options = new Botao(Content.Load<Texture2D>("BtnGuide"), Window, this.X + 300, this.Y + 70);
            this.credits = new Botao(Content.Load<Texture2D>("BtnCredits"), Window, this.X + 300, this.Y + 140);
            this.quit = new Botao(Content.Load<Texture2D>("BtnQuit"), Window, this.X + 300, this.Y + 210);
            this.back = new Botao(Content.Load<Texture2D>("BtnBack"), Window, this.X - 150, this.Y + 300);
            this.menu = new Botao(Content.Load<Texture2D>("BtnMenu"), Window, this.X - 150, this.Y + 300);
            this.arm = new Botao(Content.Load<Texture2D>("Arm"), Window, this.X + 250, this.Y + 100);
            this.Inimigo_robot = new Botao(Content.Load<Texture2D>("roBotVerde"), Window, 500, 0);
            this.Player_robot = new Botao(Content.Load<Texture2D>("roBotAzul"), Window, 0, 0);
            this.next = new Botao(Content.Load<Texture2D>("BtnStartBattle"), Window, this.X + 350, this.Y + 300);
            this.info = new Botao(Content.Load<Texture2D>("BtnInfo"), Window, this.X - 150, this.Y - 100);
            this.loja = new Botao(Content.Load<Texture2D>("BtnStore"), Window, this.X - 150, this.Y);
            this.liga = new Botao(Content.Load<Texture2D>("BtnLeague"), Window, this.X - 150, this.Y + 100);

            this.cabaca_mais = new Botao(Content.Load<Texture2D>("BtnMais"), Window, this.X + 100, this.Y - 100);
            this.bracoD_mais = new Botao(Content.Load<Texture2D>("BtnMais"), Window, this.X + 100, this.Y - 30);
            this.bracoE_mais = new Botao(Content.Load<Texture2D>("BtnMais"), Window, this.X + 100, this.Y + 30);
            this.tronco_mais = new Botao(Content.Load<Texture2D>("BtnMais"), Window, this.X + 100, this.Y + 100);
            this.pernaD_mais = new Botao(Content.Load<Texture2D>("BtnMais"), Window, this.X + 100, this.Y + 170);
            this.pernaE_mais = new Botao(Content.Load<Texture2D>("BtnMais"), Window, this.X + 100, this.Y + 240);

            this.n_1 = new Botao(Content.Load<Texture2D>("Btn1"), Window, this.X + 100, this.Y - 100);
            this.n_2 = new Botao(Content.Load<Texture2D>("Btn2"), Window, this.X + 200, this.Y - 100);
            this.n_3 = new Botao(Content.Load<Texture2D>("Btn3"), Window, this.X + 300, this.Y - 100);
            this.n_4 = new Botao(Content.Load<Texture2D>("Btn4"), Window, this.X + 100, this.Y);
            this.n_5 = new Botao(Content.Load<Texture2D>("Btn5"), Window, this.X + 200, this.Y);
            this.n_6 = new Botao(Content.Load<Texture2D>("Btn6"), Window, this.X + 300, this.Y);
            this.n_7 = new Botao(Content.Load<Texture2D>("Btn7"), Window, this.X + 100, this.Y + 100);
            this.n_8 = new Botao(Content.Load<Texture2D>("Btn8"), Window, this.X + 200, this.Y + 100);

            Player_cabeca = rnd.Next(15, 26);
            Player_tronco = rnd.Next(15, 26);
            Player_bracoD = rnd.Next(15, 26);
            Player_bracoE = rnd.Next(15, 26);
            Player_pernaD = rnd.Next(15, 26);
            Player_pernaE = rnd.Next(15, 26);
            Player_level = 1;
            preco = 10;

            calculaPlayer();
            Menor_vida_em_combate = Player_vida;

            if (Player_agilidade > Inimigo_agilidade)
                Player_atacando = true;
            else
                Player_atacando = false;

            //video_player.Play(BG_Batalha);
            //video_player.Pause();
        }
        public void Update(GameTime gameTime, MouseState mouse_atual, MouseState mouse_anterior)
        {
            Window.Title = gold.ToString();
            switch (estado_atual)
            {
                case (MenuEnum.NULL):
                    {
                        if (start.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.START;
                        }
                        else if (options.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.OPTIONS;
                            posCredito = Window.ClientBounds.Height;
                        }
                        else if (credits.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.CREDITS;
                        }
                        else if (quit.isClicking(mouse_atual, mouse_anterior))
                        {
                            Game1.quitar = true;
                        }
                        break;
                    }
                case (MenuEnum.OPTIONS):
                    {
                        if (menu.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.NULL;
                        }
                        break;
                    }
                case (MenuEnum.LIGA):
                    {
                        liga_on = true;
                        Inimigo_morto = false;
                        Player_morto = false;
                        if (liga_on)
                        {
                            if (avanco_liga == 1)
                            {
                                Inimigo_cabeca = 40;
                                Inimigo_tronco = 50;
                                Inimigo_bracoD = 40;
                                Inimigo_bracoE = 35;
                                Inimigo_pernaD = 35;
                                Inimigo_pernaE = 20;
                                Inimigo_level = 2;
                            }
                            if (avanco_liga == 2)
                            {
                                Inimigo_cabeca = 50;
                                Inimigo_tronco = 40;
                                Inimigo_bracoD = 50;
                                Inimigo_bracoE = 45;
                                Inimigo_pernaD = 45;
                                Inimigo_pernaE = 40;
                                Inimigo_level = 3;
                            }
                            if (avanco_liga == 3)
                            {
                                Inimigo_cabeca = 30;
                                Inimigo_tronco = 120;
                                Inimigo_bracoD = 50;
                                Inimigo_bracoE = 50;
                                Inimigo_pernaD = 30;
                                Inimigo_pernaE = 30;
                                Inimigo_level = 4;
                            }
                            if (avanco_liga == 4)
                            {
                                Inimigo_cabeca = 60;
                                Inimigo_tronco = 20;
                                Inimigo_bracoD = 70;
                                Inimigo_bracoE = 75;
                                Inimigo_pernaD = 55;
                                Inimigo_pernaE = 55;
                                Inimigo_level = 5;
                            }
                            if (avanco_liga == 5)
                            {
                                Inimigo_cabeca = 100;
                                Inimigo_tronco = 60;
                                Inimigo_bracoD = 50;
                                Inimigo_bracoE = 50;
                                Inimigo_pernaD = 40;
                                Inimigo_pernaE = 40;
                                Inimigo_level = 6;
                            }
                            if (avanco_liga == 6)
                            {
                                Inimigo_cabeca = 90;
                                Inimigo_tronco = 90;
                                Inimigo_bracoD = 68;
                                Inimigo_bracoE = 66;
                                Inimigo_pernaD = 110;
                                Inimigo_pernaE = 110;
                                Inimigo_level = 7;
                            }
                            if (avanco_liga == 7)
                            {
                                Inimigo_cabeca = 100;
                                Inimigo_tronco = 85;
                                Inimigo_bracoD = 95;
                                Inimigo_bracoE = 78;
                                Inimigo_pernaD = 98;
                                Inimigo_pernaE = 49;
                                Inimigo_level = 8;
                            }
                            if (avanco_liga == 8)
                            {
                                Inimigo_cabeca = 150;
                                Inimigo_tronco = 150;
                                Inimigo_bracoD = 150;
                                Inimigo_bracoE = 150;
                                Inimigo_pernaD = 150;
                                Inimigo_pernaE = 150;
                                Inimigo_level = 9;
                            }
                        }

                        calculaInimigo();
                        calculaPlayer();
                        if (Player_ataque_especial > 50)
                            Player_ataque_especial = 50;
                        Player_agilidade = ((Player_pernaD + Player_pernaE + Player_bracoD) / ((Player_cabeca + Player_tronco))) + (Player_level * 1);
                        if (Player_agilidade > 50)
                            Player_agilidade = 50;
                        Player_ataque_especial_dano = ((Player_bracoD + (Player_bracoE / 2) + (3 * Player_bracoD) + Player_bracoE) + 10) + (Player_level * 10);

                        if (back.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.START;
                        }
                        if (next.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.BATALHA;
                            liga_on = true;
                            Qnt_Inimigos += 1;
                        }
                        if (n_1.isClicking(mouse_atual, mouse_anterior))
                        {
                            avanco_liga = 1;
                        }
                        if (n_2.isClicking(mouse_atual, mouse_anterior))
                        {
                            avanco_liga = 2;
                        }
                        if (n_3.isClicking(mouse_atual, mouse_anterior))
                        {
                            avanco_liga = 3;
                        }
                        if (n_4.isClicking(mouse_atual, mouse_anterior))
                        {
                            avanco_liga = 4;
                        }
                        if (n_5.isClicking(mouse_atual, mouse_anterior))
                        {
                            avanco_liga = 5;
                        }
                        if (n_6.isClicking(mouse_atual, mouse_anterior))
                        {
                            avanco_liga = 6;
                        }
                        if (n_7.isClicking(mouse_atual, mouse_anterior))
                        {
                            avanco_liga = 7;
                        }
                        if (n_8.isClicking(mouse_atual, mouse_anterior))
                        {
                            avanco_liga = 8;
                        }
                        break;
                    }
                case (MenuEnum.CREDITS):
                    {
                        if (menu.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.NULL;
                            posCredito = Window.ClientBounds.Height;
                        }
                        break;
                    }
                case (MenuEnum.INFO):
                    {
                        if (back.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.START;
                        }
                    }
                    break;
                case (MenuEnum.LOJA):
                    {

                        if (back.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.START;
                        }
                        if (cabaca_mais.isClicking(mouse_atual, mouse_anterior) && gold >= preco)
                        {
                            Player_vida_bonus += 5;
                            gold -= preco;
                            preco += 10;
                        }
                        if (tronco_mais.isClicking(mouse_atual, mouse_anterior) && gold >= preco)
                        {
                            Player_velocidade_bonus += 1;
                            gold -= preco;
                            preco += 10;
                        }
                        if (bracoD_mais.isClicking(mouse_atual, mouse_anterior) && gold >= preco)
                        {
                            Player_ataque_especial_bonus += 1;
                            gold -= preco;
                            preco += 10;
                        }
                        if (bracoE_mais.isClicking(mouse_atual, mouse_anterior) && gold >= preco)
                        {
                            Player_dano_bonus += 3;
                            gold -= preco;
                            preco += 10;
                        }
                        if (pernaE_mais.isClicking(mouse_atual, mouse_anterior) && gold >= preco)
                        {
                            Player_ataque_especial_dano_bonus += 5;
                            gold -= preco;
                            preco += 10;
                        }
                        if (pernaD_mais.isClicking(mouse_atual, mouse_anterior) && gold >= preco)
                        {
                            Player_agilidade_bonus += 1;
                            gold -= preco;
                            preco += 10;
                        }

                    }
                    break;
                case (MenuEnum.BATALHA):
                    {
                        if (back.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.START;
                            Inimigo_miss = false;
                            Player_critico = false;
                            Player_miss = false;
                            Inimigo_critico = false;
                            if (liga_on && avanco_liga == 1 && !liga_1_do && Inimigo_vida == 0)
                            {
                                Player_exp += (50 / Player_level) * Player_level;
                                gold += 50;
                                gold_total += 50;
                                league_points += 1;
                                liga_1_do = true;
                            }
                            if (liga_on && avanco_liga == 4 && !liga_4_do && Inimigo_vida == 0)
                            {
                                Player_exp += (50 / Player_level) * Player_level;
                                gold += 200;
                                gold_total += 200;
                                league_points += 1;
                                liga_4_do = true;
                            }
                            if (liga_on && avanco_liga == 2 && !liga_2_do && Inimigo_vida == 0)
                            {
                                Player_exp += (50 / Player_level) * Player_level;
                                gold += 100;
                                gold_total += 100;
                                league_points += 1;
                                liga_2_do = true;
                            }
                            if (liga_on && avanco_liga == 3 && !liga_3_do && Inimigo_vida == 0)
                            {
                                Player_exp += (50 / Player_level) * Player_level;
                                gold += 150;
                                gold_total += 150;
                                league_points += 1;
                                liga_3_do = true;
                            }
                            if (liga_on && avanco_liga == 5 && !liga_5_do && Inimigo_vida == 0)
                            {
                                Player_exp += (50 / Player_level) * Player_level;
                                Player_exp += (50 / Player_level) * Player_level;
                                gold += 200;
                                gold_total += 200;
                                league_points += 1;
                                liga_5_do = true;
                            }
                            if (liga_on && avanco_liga == 6 && !liga_6_do && Inimigo_vida == 0)
                            {
                                Player_exp += (50 / Player_level) * Player_level;
                                Player_exp += (50 / Player_level) * Player_level;
                                gold += 200;
                                gold_total += 200;
                                league_points += 1;
                                liga_4_do = true;
                            }
                            if (liga_on && avanco_liga == 7 && !liga_7_do && Inimigo_vida == 0)
                            {
                                Player_exp += (50 / Player_level) * Player_level;
                                Player_exp += (50 / Player_level) * Player_level;
                                Player_exp += (50 / Player_level) * Player_level;
                                gold += 200;
                                gold_total += 200;
                                league_points += 1;
                                liga_7_do = true;
                            }
                            if (liga_on && avanco_liga == 8 && !liga_8_do && Inimigo_vida == 0)
                            {
                                Player_exp += (50 / Player_level) * Player_level;
                                Player_exp += (50 / Player_level) * Player_level;
                                Player_exp += (50 / Player_level) * Player_level;
                                Player_exp += (50 / Player_level) * Player_level;
                                gold += 400;
                                gold_total += 400;
                                league_points += 1;
                                liga_8_do = true;
                            }
                            if (Player_vida < Menor_vida_em_combate && Player_vida > 0)
                                Menor_vida_em_combate = Player_vida;
                            if (Inimigo_vida == 0)
                            {
                                Player_exp += (50 / Player_level) * Player_level;
                                gold += 3 * Inimigo_level;
                                gold_total += 3 * Inimigo_level;
                                Vitoria += 1;
                            }
                            if (Player_vida == 0)
                            {
                                Vezes_morto += 1;
                            }
                        }

                        if (Player_atacando != true)
                        {



                            //player atacando
                            if (Player_vida > 0)
                            {
                                if (mouse_atual.LeftButton == ButtonState.Pressed && !(mouse_anterior.LeftButton == ButtonState.Pressed))
                                {
                                    Player_atacando = true;
                                    Inimigo_agi_teste = rnd.Next(1, 100);
                                    Player_ataque_especial_teste = rnd.Next(1, 100);
                                    if (Inimigo_agi_teste > Inimigo_agilidade && Player_ataque_especial_teste > Player_ataque_especial)
                                    {
                                        Inimigo_vida -= Player_dano;
                                        gold += 1;
                                        gold_total += 1;
                                        Inimigo_miss = false;
                                        Player_critico = false;
                                    }
                                    else if (Inimigo_agi_teste <= Inimigo_agilidade && Inimigo_vida > 0 && Player_vida > 0)
                                    {
                                        Inimigo_miss = true;
                                        Player_critico = false;
                                    }
                                    else if (Inimigo_ataque_especial_teste <= Inimigo_ataque_especial && Inimigo_vida > 0 && Player_vida > 0)
                                    {
                                        Inimigo_vida -= Player_ataque_especial_dano;
                                        gold += 2;
                                        gold_total += 2;
                                        Inimigo_miss = false;
                                        Player_critico = true;
                                        if (Player_ataque_especial_dano > Maior_critico)
                                            Maior_critico = Player_ataque_especial_dano;
                                    }
                                }
                            }
                        }
                        else
                        {

                            // inimigo começando

                            //inimigo atacando
                            if (Inimigo_vida > 0)
                            {
                                if (mouse_atual.LeftButton == ButtonState.Pressed && !(mouse_anterior.LeftButton == ButtonState.Pressed))
                                {
                                    Player_atacando = false;
                                    Player_agi_teste = rnd.Next(1, 100);
                                    Inimigo_ataque_especial_teste = rnd.Next(1, 100);
                                    if (Player_agi_teste > Player_agilidade && Inimigo_ataque_especial_teste > Inimigo_ataque_especial)
                                    {
                                        Player_vida -= Inimigo_dano;
                                        Player_miss = false;
                                        Inimigo_critico = false;
                                    }
                                    else if (Player_agi_teste <= Player_agilidade && Inimigo_vida > 0 && Player_vida > 0)
                                    {
                                        Player_miss = true;
                                        Inimigo_critico = false;
                                        gold += 1;
                                        gold_total += 1;
                                        Esquivas += 1;
                                    }
                                    else if (Inimigo_ataque_especial_teste <= Inimigo_ataque_especial && Inimigo_vida > 0 && Player_vida > 0)
                                    {
                                        Player_vida -= Inimigo_ataque_especial_dano;
                                        Player_miss = false;
                                        Inimigo_critico = true;
                                    }
                                }
                            }
                        }

                        if (Inimigo_vida <= 0)
                        {
                            Inimigo_morto = true;
                            Inimigo_vida = 0;
                        }
                        if (Player_vida <= 0)
                        {
                            Player_morto = true;
                            Player_vida = 0;
                        }
                        if (Inimigo_ataque_especial > 50)
                        {
                            Inimigo_ataque_especial = 50;
                        }
                        if (Player_ataque_especial > 50)
                        {
                            Player_ataque_especial = 50;
                        }
                        break;
                    }
                case (MenuEnum.START):
                    {
                        calculaPlayer();
                        Inimigo_level = Player_level;

                        if (info.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.INFO;
                        }
                        if (liga.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.LIGA;
                        }
                        if (loja.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.LOJA;
                        }
                        if (Player_level >= 50)
                        {
                            Player_exp = 0;
                        }
                        if (Player_exp >= Player_level * 100)
                        {
                            Player_exp = 0;
                            Player_level += 1;
                            calculaPlayer();
                        }
                        if (menu.isClicking(mouse_atual, mouse_anterior))
                        {
                            estado_atual = MenuEnum.NULL;
                        }
                        if (next.isClicking(mouse_atual, mouse_anterior))
                        {
                            Inimigo_morto = false;
                            Player_morto = false;
                            liga_on = false;
                            Qnt_Inimigos += 1;
                            estado_atual = MenuEnum.BATALHA;
                            if (!liga_on)
                            {
                                Inimigo_cabeca = rnd.Next((Player_level + 5), (Player_level + 10));
                                Inimigo_tronco = rnd.Next((Player_level + 5), (Player_level + 10));
                                Inimigo_bracoD = rnd.Next((Player_level + 5), (Player_level + 10));
                                Inimigo_bracoE = rnd.Next((Player_level + 5), (Player_level + 10));
                                Inimigo_pernaD = rnd.Next((Player_level + 5), (Player_level + 10));
                                Inimigo_pernaE = rnd.Next((Player_level + 5), (Player_level + 10));
                                gold_teste = rnd.Next((Player_level * 2), (Player_level*2 + 20));
                            }

                            calculaInimigo();
                            calculaPlayer();
                            
                        }
                        if (arm.Colisao.Contains(mouse_atual.X, mouse_atual.Y))
                        {
                            if (mouse_atual.LeftButton == ButtonState.Pressed)
                            {
                                arm.Posicao = new Vector2(mouse_atual.X, mouse_atual.Y);
                            }
                        }
                        break;
                    }
            }
        }

        private void calculaPlayer()
        {
            Player_vida = (((((Player_tronco * 10) + 3 * (Player_bracoD + Player_bracoE)) / 2) * 2) + (20 * Player_level)) + Player_vida_bonus;
            Player_vida_original = (((((Player_tronco * 10) + 3 * (Player_bracoD + Player_bracoE)) / 2) * 2) + (20 * Player_level)) + Player_vida_original_bonus;
            Player_velocidade = (((3 * (Player_pernaD + Player_pernaE)) / (Player_tronco / 2)) + (Player_level * 2)) + Player_velocidade_bonus;
            Player_dano = (((Player_bracoD + (Player_bracoE / 2) + (3 * Player_bracoD) + Player_bracoE) / 10) + (Player_level * 5)) + Player_dano_bonus;
            Player_ataque_especial = ((((Player_cabeca * 5) + (Player_bracoD + Player_bracoE)) / (Player_tronco / 3)) + (Player_level * 1)) + Player_ataque_especial_bonus;
            if (Player_ataque_especial > 50)
                Player_ataque_especial = 50;
            Player_agilidade = (((Player_pernaD + Player_pernaE + Player_bracoD) / ((Player_cabeca + Player_tronco))) + (Player_level * 1)) + Player_agilidade_bonus;
            if (Player_agilidade > 50)
                Player_agilidade = 50;
            Player_ataque_especial_dano = (((Player_bracoD + (Player_bracoE / 2) + (3 * Player_bracoD) + Player_bracoE) + 10) + (Player_level * 10)) + Player_ataque_especial_dano_bonus;
        }

        private void calculaInimigo()
        {
            Inimigo_vida = ((((Inimigo_tronco * 10) + 3 * (Inimigo_bracoE + Player_bracoE)) / 2) * 2) + (20 * Inimigo_level);
            Inimigo_velocidade = ((3 * (Inimigo_pernaD + Inimigo_pernaE)) / (Inimigo_tronco / 2)) + (Inimigo_level * 2);
            Inimigo_dano = ((Inimigo_bracoD + (Inimigo_bracoE / 2) + (3 * Inimigo_bracoD) + Inimigo_bracoE) / 10) + (Inimigo_level * 5);
            Inimigo_ataque_especial = (((Inimigo_cabeca * 5) + (Inimigo_bracoD + Inimigo_bracoE)) / (Inimigo_tronco / 3)) + (Inimigo_level * 1);
            if (Inimigo_ataque_especial > 50)
                Inimigo_ataque_especial = 50;
            Inimigo_agilidade = ((Inimigo_pernaD + Inimigo_pernaE + Inimigo_bracoD) / ((Inimigo_cabeca + Inimigo_tronco))) + (Inimigo_level * 1);
            if (Inimigo_agilidade > 50)
                Inimigo_agilidade = 50;
            Inimigo_ataque_especial_dano = ((Inimigo_bracoD + (Inimigo_bracoE / 2) + (3 * Inimigo_bracoD) + Inimigo_bracoE) + 10) + (Inimigo_level * 10);
        }

        public void Draw(GameTime gameTime, SpriteBatch spriteBatch)
        {
            //spriteBatch.Draw(BG_Batalha(video_player.GetTexture), Vector2.Zero, Color.White);
            switch (estado_atual)
            {
                case (MenuEnum.START):
                    {
                        spriteBatch.Draw(Game1.BG_Batalha, Vector2.Zero, Color.White);
                        menu.Draw(gameTime, spriteBatch);
                        next.Draw(gameTime, spriteBatch);
                        info.Draw(gameTime, spriteBatch);
                        loja.Draw(gameTime, spriteBatch);
                        liga.Draw(gameTime, spriteBatch);

                        spriteBatch.DrawString(Game1.Arial, "Level = " + Player_level, new Vector2(Window.ClientBounds.Width - 500, 50), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Experiencia = " + Player_exp, new Vector2(Window.ClientBounds.Width - 500, 0), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Vida = " + Player_vida_original, new Vector2(Window.ClientBounds.Width - 500, 200), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Velocidade = " + Player_velocidade, new Vector2(Window.ClientBounds.Width - 500, 150), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Dano = " + Player_dano, new Vector2(Window.ClientBounds.Width - 500, 250), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Chance de Critico = " + Player_ataque_especial + "%", new Vector2(Window.ClientBounds.Width - 500, 100), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Esquiva = " + Player_agilidade + "%", new Vector2(Window.ClientBounds.Width - 500, 300), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Critico = " + Player_ataque_especial_dano, new Vector2(Window.ClientBounds.Width - 500, 350), Color.Khaki);
                        break;
                    }
                case (MenuEnum.LOJA):
                    {
                        spriteBatch.Draw(Game1.BG_Batalha, Vector2.Zero, Color.White);
                        spriteBatch.DrawString(Game1.Arial, "Preço AP = " + preco, new Vector2(Window.ClientBounds.Width - 750, 100), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "AP = " + gold, new Vector2(Window.ClientBounds.Width - 750, 50), Color.Khaki);
                        cabaca_mais.Draw(gameTime, spriteBatch);
                        spriteBatch.DrawString(Game1.Arial, "Vida = " + Player_vida, new Vector2(this.X + 150, this.Y - 90), Color.Khaki);
                        bracoD_mais.Draw(gameTime, spriteBatch);
                        spriteBatch.DrawString(Game1.Arial, "Chance de Critico = " + Player_ataque_especial + "%", new Vector2(this.X + 150, this.Y - 20), Color.Khaki);
                        bracoE_mais.Draw(gameTime, spriteBatch);
                        spriteBatch.DrawString(Game1.Arial, "Dano = " + Player_dano, new Vector2(this.X + 150, this.Y + 40), Color.Khaki);
                        tronco_mais.Draw(gameTime, spriteBatch);
                        spriteBatch.DrawString(Game1.Arial, "Velocidade = " + Player_velocidade, new Vector2(this.X + 150, this.Y + 110), Color.Khaki);
                        pernaD_mais.Draw(gameTime, spriteBatch);
                        spriteBatch.DrawString(Game1.Arial, "Esquiva = " + Player_agilidade + "%", new Vector2(this.X + 150, this.Y + 180), Color.Khaki);
                        pernaE_mais.Draw(gameTime, spriteBatch);
                        spriteBatch.DrawString(Game1.Arial, "Critico = " + Player_ataque_especial_dano, new Vector2(this.X + 150, this.Y + 250), Color.Khaki);
                        back.Draw(gameTime, spriteBatch);
                        break;
                    }
                case (MenuEnum.INFO):
                    {
                        spriteBatch.Draw(Game1.BG_Batalha, Vector2.Zero, Color.White);
                        if (league_points >= 1)
                        {
                            spriteBatch.Draw(ensigna_1, new Vector2(Window.ClientBounds.Width - 300, 50), Color.White);
                        }
                        if (league_points >= 2)
                        {
                            spriteBatch.Draw(ensigna_2, new Vector2(Window.ClientBounds.Width - 200, 50), Color.White);
                        }
                        if (league_points >= 3)
                        {
                            spriteBatch.Draw(ensigna_3, new Vector2(Window.ClientBounds.Width - 100, 50), Color.White);
                        }
                        if (league_points >= 4)
                        {
                            spriteBatch.Draw(ensigna_4, new Vector2(Window.ClientBounds.Width - 300, 150), Color.White);
                        }
                        if (league_points >= 5)
                        {
                            spriteBatch.Draw(ensigna_5, new Vector2(Window.ClientBounds.Width - 200, 150), Color.White);
                        }
                        if (league_points >= 6)
                        {
                            spriteBatch.Draw(ensigna_6, new Vector2(Window.ClientBounds.Width - 100, 150), Color.White);
                        }
                        if (league_points >= 7)
                        {
                            spriteBatch.Draw(ensigna_7, new Vector2(Window.ClientBounds.Width - 250, 250), Color.White);
                        }
                        if (league_points >= 8)
                        {
                            spriteBatch.Draw(ensigna_8, new Vector2(Window.ClientBounds.Width - 120, 250), Color.White);
                        }
                        spriteBatch.DrawString(Game1.Arial, "Batalhas Vencidas = " + Vitoria, new Vector2(Window.ClientBounds.Width - 750, 200), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Esquivas = " + Esquivas, new Vector2(Window.ClientBounds.Width - 750, 150), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Inimigos enfrentados = " + Qnt_Inimigos, new Vector2(Window.ClientBounds.Width - 750, 300), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Maior Critico = " + Maior_critico, new Vector2(Window.ClientBounds.Width - 750, 100), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Batalhas perdidas = " + Vezes_morto, new Vector2(Window.ClientBounds.Width - 750, 250), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Menor vida em combate = " + Menor_vida_em_combate, new Vector2(Window.ClientBounds.Width - 750, 350), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "AP Acumulado = " + gold_total, new Vector2(Window.ClientBounds.Width - 750, 0), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Tempo de Jogo = " + gameTime.TotalGameTime.Minutes + " : " + gameTime.TotalGameTime.Seconds, new Vector2(Window.ClientBounds.Width - 750, 50), Color.Khaki);
                        back.Draw(gameTime, spriteBatch);
                    }
                    break;
                case (MenuEnum.LIGA):
                    {
                        spriteBatch.Draw(Game1.BG_Batalha, Vector2.Zero, Color.White);
                        n_1.Draw(gameTime, spriteBatch);
                        if (league_points >= 1)
                        {
                            n_2.Draw(gameTime, spriteBatch);
                        }
                        if (league_points >= 2)
                        {
                            n_3.Draw(gameTime, spriteBatch);
                        }
                        if (league_points >= 3)
                        {
                            n_4.Draw(gameTime, spriteBatch);
                        }
                        if (league_points >= 4)
                        {
                            n_5.Draw(gameTime, spriteBatch);
                        }
                        if (league_points >= 5)
                        {
                            n_6.Draw(gameTime, spriteBatch);
                        }
                        if (league_points >= 6)
                        {
                            n_7.Draw(gameTime, spriteBatch);
                        }
                        if (league_points >= 7)
                        {
                            n_8.Draw(gameTime, spriteBatch);
                        }
                        next.Draw(gameTime, spriteBatch);
                        back.Draw(gameTime, spriteBatch);
                        break;
                    }
                case (MenuEnum.CREDITS):
                    {
                        spriteBatch.Draw(Game1.BG_Menu, Vector2.Zero, Color.White);
                        menu.Draw(gameTime, spriteBatch);
                        spriteBatch.DrawString(Game1.Arial, textoCreditos(), new Vector2(300, posCredito), Color.White);
                        posCredito -= 0.5F;
                        break;
                    }
                case (MenuEnum.OPTIONS):
                    {
                        spriteBatch.Draw(Game1.BG_Batalha, Vector2.Zero, Color.White);
                        menu.Draw(gameTime, spriteBatch);

                        spriteBatch.DrawString(Game1.Arial12, textoGuide(), new Vector2(50, 50), Color.White);
                        break;
                    }
                case (MenuEnum.BATALHA):
                    {
                        spriteBatch.Draw(Game1.BG_Batalha, Vector2.Zero, Color.White);

                        if (!Inimigo_morto)
                        {
                            Player_robot.Draw(gameTime, spriteBatch);
                        }
                        else
                        {
                            back.Draw(gameTime, spriteBatch);
                        }

                        if (!Player_morto)
                        {
                            Inimigo_robot.Draw(gameTime, spriteBatch);
                        }
                        else
                        {
                            back.Draw(gameTime, spriteBatch);
                        }

                        if (Inimigo_miss)
                        {
                            spriteBatch.DrawString(Game1.Arial, "MISS", new Vector2(Window.ClientBounds.Width - 570, 200), Color.Khaki);
                        }
                        if (Player_miss)
                        {
                            spriteBatch.DrawString(Game1.Arial, "MISS", new Vector2(Window.ClientBounds.Width - 170, 200), Color.Khaki);
                        }
                        if (Inimigo_critico)
                        {
                            spriteBatch.DrawString(Game1.Arial, "CRIT", new Vector2(Window.ClientBounds.Width - 570, 250), Color.Khaki);
                        }
                        if (Player_critico)
                        {
                            spriteBatch.DrawString(Game1.Arial, "CRIT", new Vector2(Window.ClientBounds.Width - 170, 250), Color.Khaki);
                        }

                        spriteBatch.DrawString(Game1.Arial, "Vida = " + Inimigo_vida, new Vector2(Window.ClientBounds.Width - 750, 200), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Velocidade = " + Inimigo_velocidade, new Vector2(Window.ClientBounds.Width - 750, 150), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Dano = " + Inimigo_dano, new Vector2(Window.ClientBounds.Width - 750, 250), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Chance Critico = " + Inimigo_ataque_especial + "%", new Vector2(Window.ClientBounds.Width - 750, 100), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Esquiva = " + Inimigo_agilidade + "%", new Vector2(Window.ClientBounds.Width - 750, 300), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Critico = " + Inimigo_ataque_especial_dano, new Vector2(Window.ClientBounds.Width - 750, 350), Color.Khaki);

                        spriteBatch.DrawString(Game1.Arial, "Vida = " + Player_vida, new Vector2(Window.ClientBounds.Width - 350, 200), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Velocidade = " + Player_velocidade, new Vector2(Window.ClientBounds.Width - 350, 150), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Dano = " + Player_dano, new Vector2(Window.ClientBounds.Width - 350, 250), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Chance Critico = " + Player_ataque_especial + "%", new Vector2(Window.ClientBounds.Width - 350, 100), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Esquiva = " + Player_agilidade + "%", new Vector2(Window.ClientBounds.Width - 350, 300), Color.Khaki);
                        spriteBatch.DrawString(Game1.Arial, "Critico = " + Player_ataque_especial_dano, new Vector2(Window.ClientBounds.Width - 350, 350), Color.Khaki);
                        break;
                    }
                case (MenuEnum.NULL):
                    {
                        spriteBatch.Draw(Game1.BG_Menu, Vector2.Zero, Color.White);
                        start.Draw(gameTime, spriteBatch);
                        options.Draw(gameTime, spriteBatch);
                        credits.Draw(gameTime, spriteBatch);
                        quit.Draw(gameTime, spriteBatch);
                        break;
                    }
            }
        }

        private String textoCreditos()
        {
            return "Produção:\n\nSeven Game & DEVS07c\n\n\nProfessor: \n\nCleber Tavares Jr.\n\n\nHistória:\n\nRicardo Waitforit Ianelli\n\n\nProgramação: \n\nGabriel Leite\nRicardo Waitforit\nMauricio Maumau\n\n\nArtes:\n\nWallace Viana\nRafael de Sousa";
        }

        private String textoGuide()
        {
            String texto;
            texto = "Clique em START para começar o jogo.\nAbrirá um MENU do seu BOT.\nLá você poderá acessar as informações para ver os seus Records e tempo de jogo e suas insígnias.\nNo MENU poderá acessar a LOJA.";
            texto += "\nNa LOJA você poderá gastar seus AP para aumentar os atributos do seu BOT, porém não seja \nganacioso pois cada ponto gasto aumentar o custo do próximo AP.\nNo MENU, você poderá começar batalhas com BOTS aleatótrios para ganhar experiência e AP points.";
            texto += "\nAinda no MENU você poderá acessar a LIGA, na qual poderá combater com os BOTS mais fortes \ndo mundo. Disputando novas insígnias.\nA LIGA é dividida hierarquicamente entre 8 BOTS. Para lutar com o seguinte BOT é necessário ter a \ninsígnia do BOT anterior, e para isso você deverá derrotar-lo.";
            texto += "\n\nCombate:\nComeça o BOT que tem mais agilidade.\nNo combate, ao pressionar a tela, um turno se inicia.\nO resultado de cada turno é imediatamente apresentado na tela.\nA Batalha termina quando a vida de um dos BOTS chega a Zero.";
            return texto;
        }
    }
}